//package com.xxl.job.admin.controller.interceptor;
//
//import com.xxl.job.admin.controller.annotation.PermessionLimit;
//import com.xxl.job.admin.core.conf.XxlJobAdminConfig;
//import com.xxl.job.admin.core.util.CookieUtil;
//import org.springframework.stereotype.Component;
//import org.springframework.util.DigestUtils;
//import org.springframework.web.method.HandlerMethod;
//import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.math.BigInteger;
//
///**
// * 权限拦截, 简易版
// *
// * @author xuxueli 2015-12-12 18:09:04
// */
//@Component
//public class PermissionInterceptor extends HandlerInterceptorAdapter {
//
//
//	public static final String LOGIN_IDENTITY_KEY = "XXL_JOB_LOGIN_IDENTITY";
//	private static String LOGIN_IDENTITY_TOKEN;
//	public static String getLoginIdentityToken() {
//		if (LOGIN_IDENTITY_TOKEN == null) {
//			String username = XxlJobAdminConfig.getAdminConfig().getLoginUsername();
//			String password = XxlJobAdminConfig.getAdminConfig().getLoginPassword();
//
//			// login token
//			String tokenTmp = DigestUtils.md5DigestAsHex(String.valueOf(username + "_" + password).getBytes());		//.getBytes("UTF-8")
//			tokenTmp = new BigInteger(1, tokenTmp.getBytes()).toString(16);
//
//			LOGIN_IDENTITY_TOKEN = tokenTmp;
//		}
//		return LOGIN_IDENTITY_TOKEN;
//	}
//
//	public static boolean login(HttpServletResponse response, String username, String password, boolean ifRemember){
//
//    	// login token
//		String tokenTmp = DigestUtils.md5DigestAsHex(String.valueOf(username + "_" + password).getBytes());
//		tokenTmp = new BigInteger(1, tokenTmp.getBytes()).toString(16);
//
//		if (!getLoginIdentityToken().equals(tokenTmp)){
//			return false;
//		}
//
//		// do login
//		CookieUtil.set(response, LOGIN_IDENTITY_KEY, getLoginIdentityToken(), ifRemember);
//		return true;
//	}
//	public static void logout(HttpServletRequest request, HttpServletResponse response){
//		CookieUtil.remove(request, response, LOGIN_IDENTITY_KEY);
//	}
//	public static boolean ifLogin(HttpServletRequest request){
//		String indentityInfo = CookieUtil.getValue(request, LOGIN_IDENTITY_KEY);
//		if (indentityInfo==null || !getLoginIdentityToken().equals(indentityInfo.trim())) {
//			return false;
//		}
//		return true;
//	}
//
//
//
//	@Override
//	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//
//		if (!(handler instanceof HandlerMethod)) {
//			return super.preHandle(request, response, handler);
//		}
//
//		if (!ifLogin(request)) {
//			HandlerMethod method = (HandlerMethod)handler;
//			PermessionLimit permission = method.getMethodAnnotation(PermessionLimit.class);
//			if (permission == null || permission.limit()) {
//				response.sendRedirect(request.getContextPath() + "/toLogin");
//				//request.getRequestDispatcher("/toLogin").forward(request, response);
//				return false;
//			}
//		}
//
//		return super.preHandle(request, response, handler);
//	}
//
//}
